/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package presentacion.models;

import dtos.DTOFilaPedidoNegocio;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author Sebastian
 */
public class TableModelPedidoNegocio extends AbstractTableModel {

    private List<DTOFilaPedidoNegocio> dtos;
    private static final long serialVersionUID = 1L;
    private static final String[] NOMBRE_COLUMNAS = {"Nro Pedido", "Habitación", "Cama", "Estado Pedido"};
    private static final boolean[] COLUMNAS_EDITABLES = {false, false, false, false};
    private static final Class[] CLASE_COLUMNAS = {Integer.class, java.lang.String.class, java.lang.String.class, java.lang.String.class};

    public TableModelPedidoNegocio() {
        this.dtos = new ArrayList<DTOFilaPedidoNegocio>(0);
    }

    @Override
    public String getColumnName(int columna) {
        return NOMBRE_COLUMNAS[columna];
    }

    @Override
    public Class<?> getColumnClass(int columna) {
        return CLASE_COLUMNAS[columna];
    }

    @Override
    public boolean isCellEditable(int fila, int columna) {
        return COLUMNAS_EDITABLES[columna];
    }

    @Override
    public int getRowCount() {
        return dtos != null ? dtos.size() : 0;
    }

    @Override
    public int getColumnCount() {
        return NOMBRE_COLUMNAS.length;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        DTOFilaPedidoNegocio fila = dtos.get(rowIndex);
        Object resultado = null;
        switch (columnIndex) {
            case 0:
                resultado = fila.getNroPedido();
                break;
            case 1:
                resultado = fila.geNrotHabitacion();
                break;
            case 2:
                resultado = fila.getNroCama();
                break;
            case 3:
                resultado = fila.getNombreEstadoPedidos();
                break;
            default:
                throw new AssertionError();
        }
        return resultado;
    }

    @Override
    public void setValueAt(Object aValue, int row, int column) {

        switch (column) {
            case 3:
                dtos.get(row).setNombreEstadoPedidos((String) aValue);
                fireTableDataChanged();
                break;

            default:
                throw new AssertionError();
        }

    }

    public void addRow(DTOFilaPedidoNegocio dTOFilaPedidoNegocio) {
        dtos.add(dTOFilaPedidoNegocio);
        fireTableDataChanged();
    }

    public void removeRow(DTOFilaPedidoNegocio dTOFilaPedidoNegocio) {
        dtos.remove(dTOFilaPedidoNegocio);
        fireTableDataChanged();
    }

    public void clear() {
        dtos.clear();
    }

    public List<DTOFilaPedidoNegocio> getRows() {
        return dtos;
    }

    public void setRows(List<DTOFilaPedidoNegocio> dTOFilaPedidoNegocio) {
        dtos = dTOFilaPedidoNegocio;
        fireTableDataChanged();
    }

    public DTOFilaPedidoNegocio getRow(int nroFila) {
        return dtos.get(nroFila);
    }

//    public List<DTOFilaPedidoNegocio> getSelectedRows() {
//        List<DTOFilaPedidoNegocio> seleccionadas;
//        seleccionadas = new ArrayList<DTOFilaPedidoNegocio>();
//        if (!dtos.isEmpty()) {
//            for (DTOFilaPedidoNegocio dTOServicio : dtos) {
//                if (dTOServicio.isSeleccionado()) {
//                    seleccionadas.add(dTOServicio);
//                }
//            }
//        }
//        return seleccionadas;
//    }    
    public void actualizarEstado(int fila, String nombreEstadoNuevo) {  
        dtos.get(fila).setNombreEstadoPedidos(nombreEstadoNuevo);
        fireTableDataChanged();
    }
}
